﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using Advisor.Entities;
using System.Collections;

namespace Advisor.Entities
{
   public class NHibernateSession
    {
       private static ISessionFactory _SessionsFactory;

       /// <summary>
       ///  Método que retorna uma sessão com o NHibernate, que corresponde 
       ///  a uma conexão com o banco de dados. 
       /// </summary>
       /// <returns></returns>
       public static ISession GetSession()
       {
           if (_SessionsFactory == null)
           {
               lock(typeof(NHibernateSession))
               {   
                   if (_SessionsFactory == null)
                   {
                       Configuration cfg = new Configuration();
                       cfg.AddAssembly("Advisor.Entities");
                       _SessionsFactory = cfg.BuildSessionFactory();
                   }
               }

           }
           return _SessionsFactory.OpenSession();
       }
       private NHibernateSession()
       {
       }

    }
}
